#ifndef quantlib_zz_processess_i
#define quantlib_zz_processess_i

%include indexes.i
//%include stochasticprocess.i

%{
using QuantLib::HestonProcess;
using QuantLib::YieldTermStructure;
using QuantLib::StochasticProcess;
typedef boost::shared_ptr<StochasticProcess> HestonProcessPtr;
%}

//%template(StochasticProcess) boost::shared_ptr<StochasticProcess>;

//~ struct enumClass{
	//~ public:
		//~ enum Discretization { PartialTruncation, FullTruncation,
                              //~ Reflection,
                              //~ NonCentralChiSquareVariance,
                              //~ QuadraticExponential,
                              //~ QuadraticExponentialMartingale};
//~ };

%rename(HestonProcess) HestonProcessPtr;
class HestonProcessPtr : public boost::shared_ptr<StochasticProcess> {
	public:
			      
		%extend{

			HestonProcessPtr(const Handle<YieldTermStructure>& riskFreeRate,
			      const Handle<YieldTermStructure>& dividendYield,
			      const Handle<Quote>& s0,
			      Real v0, Real kappa,
			      Real theta, Real sigma, Real rho){
					return new HestonProcessPtr(new HestonProcess(riskFreeRate, dividendYield, s0, v0, kappa, theta, sigma, rho));
			}
		}
};


#endif